package com.yaofeng.mybatis.modules.sys.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 数据转换(DTO VO PO DO)
 *   框架提供了一个全局唯一的DozerBeanMapper来进行对象转换操作，具体百度Dozer
 * 部门、菜单树形下拉实体前端显示vo
 * Created by yaofeng on 2019/11/4.
 */
@Data
public class SelectTreeVo implements Serializable {

    private static final long serialVersionUID = -2364292156719914478L;

    /**
     * 节点id
     * 后端把Long类型的数据传给前端，前端可能会出现精度丢失的情况。
     * 例如：201511200001725439这样一个Long类型的整数，传给前端后会变成201511200001725440。
     * 解决 方法 将long映射成string类型
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /**
     * 父节点id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long parentId ;

    /** 节点名称 */
    private String label;

    /**
     * 祖级列表
     */
    private String ancestors;

    /**
     * 显示顺序
     */
    private Integer orderNum;

    /**
     * 状态（0正常 1停用）
     */
    private Integer status;

    /**
     *  路由地址
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private String url;

    /**
     * 菜单类型  菜单类型（0目录1菜单 2按钮）
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Integer menuType;


    /**
     * 菜单图片
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private String icon;

    /**
     * 菜单权限标识
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private String perms;

    /**
     * 备注
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private String remark;


    /** 子节点 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<SelectTreeVo> children;

}
